package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.utils.*;
import com.stefanini.pe.bbva.bp.in.dao.iface.OpcionesMenuDAOIface;
import com.stefanini.pe.bbva.bp.in.to.Ejecutivo;
import com.stefanini.pe.bbva.bp.in.to.UsuarioAsesor;
import com.stefanini.pe.bbva.bp.in.to.UsuarioSesion;

@Repository("opcionesMenuDAOIface")
public class OpcionesMenuDAOImpl extends SqlMapClientDaoSupport implements
		OpcionesMenuDAOIface {

	@Autowired
	public OpcionesMenuDAOImpl(SqlMapClient sqlMapClient) {
		setSqlMapClient(sqlMapClient);
	}

	public List listarMenu(String codRegistro,int idPerfil) throws Exception{
		HashMap<String,Object> map = new HashMap<String,Object>();
		map.put("in_codRegistro", codRegistro);
		map.put("in_idPerfil", idPerfil);
		
		System.out.println("SP IIAF.PIIAF_ASESORIA.sp_cons_as_datosaplicativo, param "+map);
		getSqlMapClientTemplate().queryForList("BP_OPCIONES_MENU_SqlMap.listarMenu", map);
		return (List) map.get("result");
	}
	
	public List listarTipoEjecutivo(String codRegistro) throws Exception{
		HashMap<String,Object> map = new HashMap<String,Object>();
		map.put("in_codRegistro", codRegistro);
		getSqlMapClientTemplate().queryForList("BP_OPCIONES_MENU_SqlMap.listarTipoEjecutivo", map);	
		return (List) map.get("result");
	}

	public List listarTipoEjecutivo(String codRegistro, UsuarioSesion oUsuarioSesion) throws Exception{
		HashMap<String,Object> map = new HashMap<String,Object>();
		map.put("in_codRegistro", codRegistro);
		
		System.out.println("sp: IIAF.PIIAF_ASESORIA.sp_cons_as_perfilescliente, param: "+map);
		getSqlMapClientTemplate().queryForList("BP_OPCIONES_MENU_SqlMap.listarTipoEjecutivo", map);
		
		oUsuarioSesion.setIndJerarquia(map.get("out_indjerarquia").toString());
		oUsuarioSesion.setIdUsuarioAsesor(Long.parseLong(map.get("out_idusuarioasesor").toString()));
		oUsuarioSesion.setApellidoPaterno(Util.isString(map.get("out_appaterno")));
		oUsuarioSesion.setApellidoMaterno(Util.isString(map.get("out_apmaterno")));
		oUsuarioSesion.setNombre(Util.isString(map.get("out_nombres")));
		oUsuarioSesion.setCodigoUsuario(Util.isString(map.get("in_codRegistro")));
		oUsuarioSesion.setTelefono(Util.isString(map.get("out_telefonos")));
		oUsuarioSesion.setEmail(Util.isString(map.get("out_email")));
		oUsuarioSesion.setCodOficina(Util.isString(map.get("out_codoficina")));
		oUsuarioSesion.setTipoDocumento(Util.isString(map.get("out_tipodocumento")));
		oUsuarioSesion.setNroDocumento(Util.isString(map.get("out_nrodocumento")));
		oUsuarioSesion.setFechaInformacion(Util.isString(map.get("out_fechainformacion")));
		return (List) map.get("result");
	}

	public List listarJerarquia(int idUsuarioAsesor) throws Exception{
		HashMap<String,Object> map = new HashMap<String,Object>();
		map.put("in_idusuarioasesor", idUsuarioAsesor);
		
		System.out.println("sp: IIAF.piiaf_gestion.sp_cons_gt_jerarquia, param: "+map);
		getSqlMapClientTemplate().queryForList("BP_OPCIONES_MENU_SqlMap.listarJerarquia", map);
		return (List) map.get("result");
	}
	
	public UsuarioAsesor listarTipoEjecutivoById(Long idUsuarioAsesor) throws Exception{
		HashMap map=new HashMap();
		map.put("in_idusuarioasesor", idUsuarioAsesor);				
		getSqlMapClientTemplate().queryForList("BP_OPCIONES_MENU_SqlMap.listarTipoEjecutivoById",map);
		UsuarioAsesor e=new UsuarioAsesor();
		e.setCorreo(map.get("out_email")!=null?map.get("out_email").toString():"");
		e.setNombre((map.get("out_nombres")!=null?map.get("out_nombres").toString():"")+" "+(map.get("out_appaterno")!=null?map.get("out_appaterno").toString():"")+" "+(map.get("out_apmaterno")!=null?map.get("out_apmaterno").toString():""));
		e.setTelefono(map.get("out_telefonos")!=null?map.get("out_telefonos").toString():"");
		return e;
	}
}
